﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Collections.ObjectModel;
using SAPPDI.Entitys;
using TestImpresion.Clases;
using TestImpresion.Clases.Comunes;
using TestImpresion.Clases.Listas;

namespace TestImpresion.Controles
{
    public partial class Encuadernado : UserControl
    {

        private readonly DependencyProperty _datasourceProperty =
  DependencyProperty.Register("Datasource", typeof(EncuadernadoFormulario), typeof(Encuadernado), new PropertyMetadata(new EncuadernadoFormulario()));

        [System.ComponentModel.Category("User properties")]
        [System.ComponentModel.Description("User Datasource")]
        public EncuadernadoFormulario Datasource
        {
            get { return (EncuadernadoFormulario)GetValue(_datasourceProperty); }
            set { SetValue(_datasourceProperty, value); }
        }

        public Encuadernado()
        {
            InitializeComponent();
            this.LayoutRoot.DataContext = this.Datasource;
        }

        private void RadioButton_Checked(object sender, RoutedEventArgs e)
        {
            var radioButton = (RadioButton)sender;

            if (radioButton.Name == this.rbtnRustica.Name)
            {
                this.Datasource.CurrentEncuadernado.TipoEncuadernado = new DatosCombos().GetTipoEncuadernado(true);
                OcultaDinamicos(false);
            }
            else if (radioButton.Name == this.rbtnPastaDura.Name)
            {
                this.Datasource.CurrentEncuadernado.TipoEncuadernado = new DatosCombos().GetTipoEncuadernado(false);
                OcultaDinamicos(false);
            }
            else if (radioButton.Name == this.rbtnCaballo.Name)
            {
                this.Datasource.CurrentEncuadernado.TipoEncuadernado = new List<CatalogoInfo>();
                this.Datasource.CurrentEncuadernado.VisibilityRustico = true;
                this.Datasource.CurrentEncuadernado.VisibilityArillo = false;
            }

        }

        private void OcultaDinamicos(bool visibilidad)
        {
            this.Datasource.CurrentEncuadernado.VisibilityRustico = visibilidad;
            this.Datasource.CurrentEncuadernado.VisibilityArillo = visibilidad;
        }

        private void ButtonCerrar_Click(object sender, RoutedEventArgs e)
        {
            Popup1.IsOpen = false;
        }

        private void BtnRevisar_OnClick(object sender, RoutedEventArgs e)
        {
            OpenPopUp();
        }

        private void OpenPopUp()
        {
            var valores = this.Datasource.Parent.ParentImprenta.CalculaValoresEncuadernado();
            this.panel.Children.Clear();
            this.panel2.Children.Clear();
            this.panel.Children.Add(GetPanelInformaciob("Medida: ", valores.GetMedidaEncuadernado()));
            this.panel.Children.Add(GetPanelInformaciob(string.Empty, valores.GetDesgloseMedidas()));
            this.panel.Children.Add(GetPanelInformaciob("Espesor interior : ", valores.EspesorInteriores.ToString("N4") + " cm."));
            this.panel.Children.Add(GetPanelInformaciob("Espesor insertos : ", valores.EspesorInsertos.ToString("N4") + " cm."));
            this.panel.Children.Add(GetPanelInformaciob("Lomo : ", valores.Lomo.ToString("N2") + " cm."));
            this.panel.Children.Add(GetPanelInformaciob("Forros en Pliego : ", valores.PiezasEnPliego.ToString("N4")));
            this.panel.Children.Add(GetPanelInformaciob("Pliegos por tiraje : ", valores.GetLeyendaPliegos()));
            this.panel.Children.Add(GetPanelInformaciob("Tintas : ", valores.Tintas));
            this.panel.Children.Add(GetPanelInformaciob("Gramaje : ", valores.GetGramos()));

            this.panel2.Children.Add(GetPanelInformaciob("Papel: ", valores.Papel));
            this.panel2.Children.Add(GetPanelInformaciob("Tamaño pliego", valores.MedidaComprar.ToString()));
            this.panel2.Children.Add(GetPanelInformaciob("Pliegos por tiraje : ", valores.PliegosPorTirajeConMargen.ToString()));
            this.panel2.Children.Add(GetPanelInformaciob("Tintas : ", valores.Tintas));
            this.panel2.Children.Add(GetPanelInformaciob("Costo por pliego :$ : ", valores.CostoPliegoindividual.ToString("N2")));
            this.panel2.Children.Add(GetPanelInformaciob("Costo de papel :$: ", valores.CostoLotePliegos.ToString("N2")));
            this.panel2.Children.Add(GetPanelInformaciob("Costo impresión : ", valores.CostoImpresionMargenTintas.ToString("N2")));
            this.panel2.Children.Add(GetPanelInformaciob("Costo placas: ", "$" + valores.GetCostoPlacasTintas().ToString("N2")));
            this.panel2.Children.Add(GetPanelInformaciob("Costo empastados : ", "$" + valores.GetCostoEmpastados()));
            this.panel2.Children.Add(GetPanelInformaciob("Costo total : ", "$" + valores.GetCostoTotal().ToString("N2")));

            Popup1.IsOpen = true;
        }

        private StackPanel GetPanelInformaciob(string titulo, string contenido)
        {
            var chPanel = new StackPanel { Orientation = Orientation.Horizontal };
            var lblTitulo = new Label() { Content = titulo, FontWeight = FontWeights.Bold };
            var lblContenido = new Label() { Content = contenido };
            chPanel.Children.Add(lblTitulo);
            chPanel.Children.Add(lblContenido);
            return chPanel;
        }

        public ComparPorFormulario GetValoresComprarPor()
        {
            return ComprarPor.GetValores();
        }

        private void ComprarPor_OnCalculoEvent(object sender, EventArgs e)
        {
            OpenPopUp();
        }
    }
}
